/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package op.filtros;

import core.FiltraLigacao;
import java.util.ArrayList;
import java.util.List;
import op.ContaTelefonica;
import op.Ligacao;

/**
 *
 * @author Jônatas
 */
public class FiltraPorDuracao implements FiltraLigacao {

    private long min;
    private long max;

    public FiltraPorDuracao(long min, long max) {
        this.min = min;
        this.max = max;
    }

    public ContaTelefonica execute(ContaTelefonica contaOriginal) {
        List<Ligacao> ligacoesOriginais = contaOriginal.getLigacoes();
        List<Ligacao> ligacoesDuracao = new ArrayList<Ligacao>();

        if (min <= 0) {
            min = Integer.MIN_VALUE;
        }
        if (max <= 0) {
            max = Integer.MAX_VALUE;
        }

        for (Ligacao lig : ligacoesOriginais) {

            Integer dur = null;

            if (lig.isACobrar()) {
                dur = lig.getDuracaoLigacaoACobrarSegundos();
            } else {
                dur = lig.getDuracaoLigacaoSegundos();
            }

            int duracao = dur.intValue();

            if ((duracao >= min) && (duracao <= max)) {
                ligacoesDuracao.add(lig);
            }


        }


        ContaTelefonica resposta = new ContaTelefonica(contaOriginal.getContaMensal());
        resposta.setLigacoes(ligacoesDuracao);
        return resposta;
    }
}
